package cn.suchan.jianzhi.q48_other;

/**
 * 知识点：不用加减乘除做加法
 * 题目描述
 * 写一个函数，求两个整数之和，要求在函数体内不得使用+、-、*、/四则运算符号。
 *
 * @author suchan
 * @date 2019/06/09
 */
public class Solution {

    /**
     * 相加的过程可以细分为三步：
     * ① 首先对两个数的每一位进行简单相加
     * ② 然后进行进位操作
     * ③ 将相加的结果和进位的结果进行相加
     *
     * @param num1
     * @param num2
     * @return
     */
    public int Add(int num1, int num2) {
        int exclude;
        int bitwise;
        do {
            exclude = num1 ^ num2;
            bitwise = (num1 & num2) << 1;
            num1 = exclude;
            num2 = bitwise;
        } while (num2 != 0);

        return num1;
    }

    /**
     * 原来--和++也不算+、-、*、/四则运算符号啊
     *
     * @param num1
     * @param num2
     * @return
     */
    public int Add1(int num1, int num2) {
        while (num1 != 0) {
            num2++;
            num1--;
        }
        return num2;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.Add1(1, 3));
    }
}
